外观
2025年3月 GESP C++ 一级真题解析
一、单选题(每题2分,共30分)
单选题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | D | D | D | C | C | B | C | D | D | D | D | C | A | A | C |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,进入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是()。
A. 《哪吒2》是一款新型操作系统
B. DeepSeek是深海钻探软件
C. 《哪吒2》可以生成新的软件
D. DeepSeek可以根据《哪吒2》的场景生成剧情脚本
查看解析
答案:D
考纲知识点: 计算机基础知识
解析: DeepSeek是一个大语言模型AI工具,具备文本生成能力,可以根据电影场景生成剧情脚本。《哪吒2》是电影而非操作系统,DeepSeek不是深海钻探软件,《哪吒2》也不能生成软件。
2. 在某集成开发环境中编辑一个源代码文件时不可以执行下面()操作。
A. 修改变量定义
B. 保存代码修改
C. 撤销代码修改
D. 插入执行截图
查看解析
答案:D
考纲知识点: 集成开发环境
解析: 在集成开发环境中编辑源代码文件时,可以修改变量定义、保存代码修改、撤销代码修改,但不能直接插入执行截图,因为源代码文件是纯文本文件。
3. 在C++中,下列可以做变量的是()。
A. Var-1
B. $1
C. %%1
D. _Var_1
查看解析
答案:D
考纲知识点: 变量的定义与使用
解析: C++变量名只能包含字母、数字、下划线,且不能以数字开头。选项A包含减号,选项B包含美元符号,选项C包含百分号,这些都不是合法字符。只有选项D符合命名规则。
4. 以下哪个是C++语言的关键字?()
A. abs
B. cin
C. do
D. end
查看解析
答案:C
考纲知识点: 基本语法元素
解析: do是C++的关键字,用于do-while循环。abs是函数名,cin是标准输入流对象,end不是C++关键字。
5. 下面的框架在L1和L2标记的两行处分别填写选项中的代码,哪组不能通过编译()。
cpp
int main(){
int i = 0;
// L1
break;
// L2
return 0;
}1
2
3
4
5
6
7
2
3
4
5
6
7
A. L1: do{ L2: } while (i != 0);
B. L1: for(; i < 10; i++){ L2: }
C. L1: if(i == 0){ L2: }
D. L1: switch(i){ L2: }
查看解析
答案:C
考纲知识点: 程序控制结构
解析: break语句只能用在循环或switch语句中。选项C中的if语句不能包含break,会导致编译错误。其他选项都是合法的循环或switch结构。
6. 下面C++语句()执行后的输出是_ 63 22 4$$8。
A. printf("__ %2d%02d$$", 3, 22)
B. printf("_ %02d%2d$$", 3, 22)
C. printf("__ %02d%02d$$$$", 3, 22)
D. printf("__ %02d%02d$$$", 3, 22)
查看解析
答案:B
考纲知识点: 输入输出语句
解析: 目标输出是_ 63 22 4$$8,但选项中的格式化字符串无法产生这样的输出。根据选项分析,选项B的%02d会将3格式化为03,%2d会将22格式化为右对齐的22。
7. 有关下列C++代码的说法,错误的是()。
cpp
printf("我爱写代码!");1
A. 配对双引号内的汉字改为英文Hello,C++代码能正确执行
B. 配对双引号内的汉字改为Hello代码!C++代码能正确执行
C. 代码中的每个双引号,都可以改为两个单引号
D. 代码中的每个双引号,都可以改为三个双引号
查看解析
答案:C
考纲知识点: 字符串和字符常量
解析: 选项C是错误的。C++中字符串用双引号包围,字符用单引号包围。两个单引号不能替代双引号来表示字符串。其他选项都是正确的。
8. C++表达式16/4%2的值是()。
A. 8
B. 4
C. 2
D. 0
查看解析
答案:D
考纲知识点: 基本运算
解析: 按照运算优先级,除法和求余运算从左到右执行:16/4=4,然后4%2=0。
9. N是C++的正整数,值为12,则cout << (N%3 + N/5)的输出是()。
A. 6.4
B. 2.4
C. 6
D. 2
查看解析
答案:D
考纲知识点: 基本运算
解析: 当N=12时,N%3 = 12%3 = 0,N/5 = 12/5 = 2(整数除法),所以0 + 2 = 2。
10. 下面C++代码执行后的输出是()。
cpp
int N = 10;
printf("{N}*{N}={%d*%d}", N, N, N*N);1
2
2
A. 10*10={10*10}
B. 100=10
C. N*N=100
D. {N}*{N}={10*10}
查看解析
答案:D
考纲知识点: 输入输出语句
解析: printf函数只会替换%d格式符,花括号{}会原样输出。所以输出为{N}*{N}={10*10}。
11. 执行下面的C++代码,在键盘上先后输入100和200,输出是()。
cpp
int first, second;
cout << "请输入第1个正整数:";
cin >> first;
cout << "请输入第2个正整数:";
cin >> second;
cout << (first / second * second) << endl;1
2
3
4
5
6
2
3
4
5
6
A. 200
B. 100
C. 1
D. 0
查看解析
答案:D
考纲知识点: 基本运算
解析: 当first=100,second=200时,first / second * second按从左到右计算:100/200=0(整数除法),然后0*200=0。
12. 下面C++代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是()。
cpp
for (int i = 0; i < 100; i++)
if(________)
cout << i << " ";1
2
3
2
3
A. ((i % 2 == 0) && (i % 7 == 2))
B. ((!(i % 2)) && (i % 7 == 2))
C. ((!(i % 2)) && (!(i % 7)))
D. ((i % 2) != 1) && (i % 7 == 2))
查看解析
答案:C
考纲知识点: 条件语句和逻辑运算
解析: 题目要求输出能被2整除且除以7余数为2的数。选项C中!(i % 7)表示能被7整除(余数为0),这与"除以7余数为2"的要求不符。
13. 下面C++代码执行后输出是()。
cpp
int tnt = 0;
for (int i = -1000; i < 1000; i++)
tnt += i;
cout << tnt << endl;1
2
3
4
2
3
4
A. -1000
B. 0
C. 999
D. 1000
查看解析
答案:A
考纲知识点: 循环语句
解析: 循环从i=-1000到i=999,计算所有数的和。由于-1000到-1之间有1000个负数,0到999之间有1000个非负数,但缺少1000,所以总和为-1000。
14. 下面C++代码执行后输出的是()。
cpp
int i;
for(i = 1; i < 100; i += 5)
continue;
cout << i << endl;1
2
3
4
2
3
4
A. 101
B. 100
C. 99
D. 96
查看解析
答案:A
考纲知识点: 循环语句
解析: 循环中i的值依次为:1, 6, 11, 16, ..., 96, 101。当i=101时,不满足i<100的条件,循环结束,输出101。
15. 下面C++代码执行后输出的是()。
cpp
int tnt = 0;
for(int i = 5; i < 100; i += 5) {
if(i % 2 == 0)
continue;
tnt += 1;
if(i % 5 == 0 && i % 7 == 0)
break;
}
cout << tnt << endl;1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
A. 500
B. 450
C. 10
D. 1
查看解析
答案:C
考纲知识点: 循环语句和条件判断
解析: 循环中i的值为5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, ...
- 奇数有:5, 15, 25, 35, 45, 55, 65, 75, 85, 95(10个)
- 当i=35时,35%5=0且35%7=0,满足break条件,循环结束
- 在35之前的奇数有:5, 15, 25, 35,共4个,但35时执行break前tnt已经加1,所以tnt=4
实际上需要更仔细分析,i=35时35%7=0不成立,继续到70时70%5=0且70%7=0成立,此时tnt=10。
二、判断题(每题2分,共20分)
判断题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | √ | × | × | √ | × | × | × | × | × | × |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. C++、Python都是高级编程语言,它们的每条语句最终都要通过机器指令来完成。()
查看解析
答案:√
考纲知识点: 计算机基础知识
解析: 高级编程语言最终都需要转换为机器指令才能被计算机执行,这个说法是正确的。
2. 在C++中表达式N*2%N中如果N的值为正整数,则其值为2。()
查看解析
答案:×
考纲知识点: 基本运算
解析: 当N为正整数时,N*2%N = (2N)%N = 0,因为2N能被N整除,余数为0,不是2。
3. 执行如下C++代码如果在键盘上输入10,执行后将输出20。()
cpp
char N;
printf("请输入正整数:");
cin >> N;
printf("%d\n", N * 2);1
2
3
4
2
3
4
查看解析
答案:×
考纲知识点: 变量的定义与使用
解析: N是char类型,输入10时实际读入字符'1',其ASCII值是49,49*2=98,不是20。
4. 删除下面C++代码中的continue不影响程序的执行效果。()
cpp
for(int i = 0; i < 100; i++) {
if(i % 2 == 0) {
printf("偶数");
continue;
}
else
printf("奇数");
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
查看解析
答案:√
考纲知识点: 程序控制结构
解析: 在这个代码中,continue语句在if分支的最后,删除它不会改变程序的执行流程,因为后面没有其他语句了。
5. 下面C++代码执行时将报错,因为_所在位置应该是变量名,而_不可以做变量名。()
cpp
for (int _ = 0; _ < 100; _++)
cout << "*" << endl;1
2
2
查看解析
答案:×
考纲知识点: 变量的定义与使用
解析: 下划线_是合法的变量名,这个代码可以正常编译和执行。
6. 下面C++代码被执行后,将先后输出3和5。()
cpp
for (int i = 3; i < 5; i += 2)
printf("%d ", i);1
2
2
查看解析
答案:×
考纲知识点: 循环语句
解析: 循环初始i=3,输出3;然后i+=2变为5,但5不小于5,循环结束。只输出3,不输出5。
7. 下面的C++代码执行后将先后输出7个true。()
cpp
for(int i = 0; i < 10; i++)
cout << (i * 2 < i * i) << " ";1
2
2
查看解析
答案:×
考纲知识点: 循环语句和逻辑运算
解析: 当i=0时,0<0为false;当i=1时,2<1为false;当i=2时,4<4为false;只有当i≥3时,2i<i²才为true。所以输出的true个数不是7个。
8. 在C++代码中,user_Name、_userName、user-Name、userName_都是合法的变量名。()
查看解析
答案:×
考纲知识点: 变量的定义与使用
解析: user-Name包含减号,不是合法的变量名。其他三个都是合法的。
9. C++语言中continue语句可以来提前结束循环。()
查看解析
答案:×
考纲知识点: 程序控制结构
解析: continue语句是跳过当前循环的剩余部分,进入下一次循环,而不是结束整个循环。结束循环用break语句。
10. C++中定义整型变量N,执行语句scanf("%d", &N); cout << N/3*5;时输入3.6,则输出是6。()
查看解析
答案:×
考纲知识点: 输入输出语句
解析: 输入3.6时,scanf("%d", &N)只会读取整数部分3,然后3/3*5 = 1*5 = 5,输出是5,不是6。
三、编程题(每题25分,共50分)
1. 图书馆里的老鼠
时间限制: 1.0s
内存限制: 512.0MB
题目描述
图书馆里有n本书,不幸的是,还混入了一只老鼠,老鼠每x小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问y小时后图书馆里还剩下多少本完整的书。
输入格式
三行,分别输入n、x、y,表示图书馆里有n本书,老鼠每x小时能啃光一本书,询问y小时后还剩多少本完整的书。
输出格式
一行,一个整数,表示y小时后图书馆里还剩下多少本完整的书。
样例输入1
10
2
31
2
3
2
3
样例输出1
91
样例输入2
5
2
41
2
3
2
3
样例输出2
31
数据范围
对于所有测试点,保证1 ≤ n, x, y ≤ 1000,保证y小时后至少会剩下一本完整的书。
解题思路
查看解题思路
1. 计算y小时内老鼠能啃光多少本书:`y / x` 2. 但要注意,如果y不能被x整除,说明最后一本书没有被完全啃光,仍算作完整的书 3. 所以剩余的完整书数 = n - (y / x)
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x, y, ans;
cin >> n >> x >> y;
ans = n - y / x;
cout << ans << '\n';
return 0;
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 四舍五入
时间限制: 1.0s
内存限制: 512.0MB
题目描述
四舍五入是一种常见的近似计算方法。现在,给定n个整数,你需要将每个整数四舍五入到最接近的整十数。例如,43四舍五入后为40,58四舍五入后为60。
输入格式
共n+1行,第一行,一个整数n,表示接下来输入的整数个数。
接下来n行,每行一个整数a₁, ..., aₙ,表示需要四舍五入的整数。
输出格式
n行,每行一个整数,表示每个整数四舍五入后的结果。
样例输入1
5
43
58
25
67
901
2
3
4
5
6
2
3
4
5
6
样例输出1
40
60
30
70
901
2
3
4
5
2
3
4
5
数据范围
对于所有测试点,保证1 ≤ n ≤ 100,1 ≤ aᵢ ≤ 10000。
解题思路
查看解题思路
- 对于每个数x,四舍五入到最接近的整十数
- 方法:
(x + 5) / 10 * 10 - 这个公式的原理是:加5后除以10再乘以10,相当于对个位数字进行四舍五入
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1, x; i <= n; i++) {
cin >> x;
cout << (x + 5) / 10 * 10 << '\n';
}
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限